<?php

namespace Dddxiu\rules;

use dddxiu\Layer;

/**
 * 浮点数
 */
class FloatNumber implements Rule
{
    // flag
    const F = 'f';


    /**
     * 浮点数
     * @param array $input
     * @param string $field
     * @param Layer $layer
     * @param array $args
     * @return \Closure|bool
     * @throws \Exception
     */
    public static function valid($input, $field, $layer, $args)
    {
        // 是不是数字
        $var = $input[$field];
        if (($var == (string)floatval($var))) {
            return false;
        }

        // 不是整数就是浮点 ....
        $pass = !ctype_digit($input[$field]);
        if ($pass) {
            return $layer::next(['type' => Layer::FIELD_TYPE_NUM]);
        }
        return false;
    }
}
